package fr.upstlse.glre.client.secretaire.component;

import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.widget.TabItem;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;

import fr.upstlse.glre.client.RfgConstante;
import fr.upstlse.glre.client.administration.communiquer.AdminFilterBar;
import fr.upstlse.glre.client.administration.communiquer.Communiquer;
import fr.upstlse.glre.client.administration.communiquer.action.AdminUserSelectionAction;
import fr.upstlse.glre.client.constante.AdminConstante;
import fr.upstlse.glre.client.constante.EspaceDedieConstante;
import fr.upstlse.glre.client.espacededie.commun.depot.Depot;
import fr.upstlse.glre.client.espacededie.commun.depot.Telecharger;
import fr.upstlse.glre.client.espacededie.component.AbstractMenu;
import fr.upstlse.glre.client.secretaire.EspaceSecretaire;
import fr.upstlse.glre.client.secretaire.actualite.CreationActualitePanel;
import fr.upstlse.glre.client.secretaire.actualite.ModificationActualitePanel;
import fr.upstlse.glre.client.secretaire.depot.action.SecretaireViewerSelectionAction;
import fr.upstlse.glre.client.vitrine.Vitrine;

public class EspaceSecretaireMenu extends AbstractMenu {
	private EspaceSecretaireCenter center;
	
	private void createDeconnexionMenu() {
		Label lDeconnexion = new Label(RfgConstante.DECONNEXION_LABEL);
		lDeconnexion.addClickListener(new ClickListener(){
            public void onClick(Widget sender) {    
            	RootPanel.get().clear();
            	EspaceSecretaire.killInstance();
            	Vitrine lVitrine = new Vitrine();
        	    RootPanel.get().add(lVitrine.getPanel());
        	    lVitrine.loadVitrine();
            }
        });
        add(lDeconnexion);
	}
	
	private void createCommuniquerMenu() {
        Label lCommuniquerLabel = new Label(AdminConstante.COMMUNIQUER_NAV_LABEL.getValue());
        lCommuniquerLabel.addClickListener(new ClickListener(){
            public void onClick(Widget sender) {  
            	TabItem lExistingItem = center.getItemByItemId(AdminConstante.COMMUNIQUER_TABITEM_ID.getValue());
            	if(lExistingItem == null) {
            		TabItem lItem = new TabItem();  
            		lItem.setScrollMode(Scroll.AUTO);
                    lItem.setClosable(true);
                    lItem.setText(AdminConstante.COMMUNIQUER_TABITEM_TEXT.getValue());
                    lItem.setIconStyle("icon-tabs");
                    lItem.setId(AdminConstante.COMMUNIQUER_TABITEM_ID.getValue());

                    Communiquer lCommuniquer = new Communiquer();
                    lCommuniquer.setUserSelectionAction(new AdminUserSelectionAction());
                    lCommuniquer.setFilterBar(new AdminFilterBar());
                    lItem.add(lCommuniquer);
                    lItem.layout();
                    center.add(lItem);  
                    center.setSelection(lItem);
            	}
            	else {
            		center.setSelection(lExistingItem);
            		Communiquer.getInstance().getListeUserContentPanel().layout();
            	}
            }
        });
        add(lCommuniquerLabel);
    }
	
	private void createDepotMenu() {
		// ajout du dépot
		Label lDepot = new Label(RfgConstante.DEPOT_NAV_LABEL);
		lDepot.addClickListener(new ClickListener() {
			public void onClick(Widget sender) {
				TabItem lExistingItem = center.getItemByItemId(EspaceDedieConstante.TAB_ITEM_DEPOT_ID.getValue());
            	if(lExistingItem == null) {
            		TabItem lItem = new TabItem();
    				lItem.setScrollMode(Scroll.AUTO);
    				lItem.setClosable(true);
    				lItem.setIconStyle("icon-tabs");
    				lItem.setText(EspaceDedieConstante.TAB_ITEM_DEPOT_TEXT.getValue());
    				lItem.setId(EspaceDedieConstante.TAB_ITEM_DEPOT_ID.getValue());
    				lItem.add(new Depot());
    				Telecharger lTelecharger = new Telecharger();
    				lTelecharger.setViewerSelectionAction(new SecretaireViewerSelectionAction(lTelecharger.getTelechargerPanel()));
    				lItem.add(lTelecharger);
    				lItem.layout();
    				center.add(lItem);
    				center.setSelection(lItem);
            	}
            	else {
            		center.setSelection(lExistingItem);
            		Depot.getInstance().getDepotPanel().layout();
            	}
				
			}
		});
		add(lDepot);
	}
	
	private void createActualiteMenu() {
		Label lActualite = new Label(EspaceDedieConstante.MENU_ACTUALITE_LABEL.getValue());
		lActualite.addClickListener(new ClickListener() {
			public void onClick(Widget sender) {
				TabItem lExistingItem = center.getItemByItemId(EspaceDedieConstante.TAB_ITEM_ACTUALITE_ID.getValue());
            	if(lExistingItem == null) {
            		TabItem lItem = new TabItem();
    				lItem.setScrollMode(Scroll.AUTO);
    				lItem.setClosable(true);
    				lItem.setIconStyle("icon-tabs");
    				lItem.setText(EspaceDedieConstante.TAB_ITEM_ACTUALITE_TEXT.getValue());
    				lItem.setId(EspaceDedieConstante.TAB_ITEM_ACTUALITE_ID.getValue());
    				lItem.add(new CreationActualitePanel());
    				lItem.add(new ModificationActualitePanel());
    				lItem.layout();
    				center.add(lItem);
    				center.setSelection(lItem);
            	}
            	else {
            		center.setSelection(lExistingItem);
            		CreationActualitePanel.getInstance().getCreationPanel().layout();
            	}
				
			}
		});
		add(lActualite);
	}

	public void initWidget() {
		setTitle("Navigation");
		center = EspaceSecretaireCenter.getInstance();
		createActualiteMenu();
		createDepotMenu();
		createCommuniquerMenu();
		createDeconnexionMenu();
	}

}
